﻿using System;
using System.Collections;

namespace Csharp哈希表
{

    public class weapon
    {
        public string name;
        public weapon(string name)
        {
            this.name = name;
        }
        //重写tostring方法
        public override string ToString()
        {
            return name;
        }
        public void  showname()
        {
            Console.WriteLine("{0}",this.name);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Hashtable table = new Hashtable();

            #region hashtable演示
            //假设有一把武器，叫霜之哀伤，这把霜之哀伤的id为123
            //我把这把爽之哀伤放进我的武器目录里

            weapon w = new weapon("霜之哀伤");

            table.Add("123", w);//----添加到武器库里面了
            table.Add("456", w);

            Console.WriteLine(table["123"]);//-----索引到霜之哀伤
            Console.WriteLine(table["456"]);//-----也可以索引到霜之哀伤

            weapon a = new weapon("123");
            a.showname();


           
            //属性：count ：键值对的个数
            //     Keys  ：HashTable中键的集合
            //    Value  : HashTable中值的集合

            //方法：
            //增删查改
            //Add(key,value) 在哈希表中添加一对键值对
            //HashTable 中，一个键对应一个值，一个值可以对应多个键----多对一的关系
            //Remove(key)删除键值
            //----因为一个值有可能对应多个键，这样就不能把整个键值对删掉
            //----只有没有键指向这个值，就会被自动释放掉，只需要删除键值就ok了

            //contains(key)检测是否包含此键值对
            //containsKey(key) 检测是否包含这个键
            //containsValue(Value) 检测是否包含这个值

            //访问：索引器[键]

            #endregion

            #region 哈希表概念
            //哈希表

            //hashtable----也是system.Collection 集合下的数据结构类
            // 它储存的也是object类型的对象---在内存中是散列排
            // 因为这个特性，非常适合存储大量数据----字典

            //HashTable 存储的是<键，值>对

            //HashTable table =new HashTable();----------声明一个哈希变量
            //因为要试用于所有类型，所以键，值是object类型
            #endregion


        }
    }
}
